﻿/**********************************************************************************************************************************/
// Vê o Extra 1.0
// Biblioteca principal.js
// Data: 01/10/2010
// Autor: Vinícius Faria - Mídia 3
// Email: vinicius.faria@midia3.com.br
// Descrição: Contém todas as funcionalidades do app.
/**********************************************************************************************************************************/


/**********************************************************************************************************************************/
// QA TÉCNICO (Em Processo)
// Histórias:
// - Escolher meus canais
// - Acompanhar meus canais
// - Alterar meus canais
// - Filtrar meus canais
/**********************************************************************************************************************************/


// Variáveis globais
var canaisOwner; // Canais do Owner
var canaisOwnerCarregados = false; // Canais do Owner carregados
var comentariosOwner;  // Comentários do Owner
var comentariosOwnerCarregados = false; // Comentários do Owner carregados
var nomeOwner = ""; //Nome do Owner
var canaisCarregados = false; // Verifica se os canais já foram carregados uma vez para não precisar carregá-los de novo.
var urlExtra = "http://extra.globo.com/";
var numLimiteRSS = 5; // Número limite de noticias exibidas (começando do 0).
var flagDesenv = true;
var urlInstallApp = "http://www.orkut.com.br/Main#AppInfo?appId=51226454334";


/**********************************************************************************************************************************/
// Instancia a function carregaFeeds
//      canaisGravados -> json de canais do dono.
//      numFeeds -> quantidade de feeds a ser carregado.
//      callback -> function executada após o consumo dos feeeds
/**********************************************************************************************************************************/
$.extend({
    carregaFeeds: function(canaisGravados, numFeeds, callback) {
        var arrFeeds = [];
        var arrCanaisTodos = [];
        var contador = 0;

        $("#comboCanais").html("<option value='todos'>Todos</option>");

        $.each(canaisGravados.id, function(a) {
            $.each(canais, function(b) {
                $.each(canais[b].subcanais, function(c) {
                    if (canais[b].subcanais[c].id == canaisGravados.id[a]) {
                        // Monta a select/combo dinamicamente de acordo com os canais do usuario
                        var descCanal = canais[b].nome + ' > ' + canais[b].subcanais[c].nome;
                        $('#comboCanais').append('<option value="' + canais[b].subcanais[c].id + '">' + descCanal + '</option>');

                        // Redefinindo valor da var para adequar layout
                        descCanal = canais[b].nome + ' <span>&nbsp;&nbsp;</span> ' + canais[b].subcanais[c].nome;

                        // Monta um coleção de canais que tenha "Tudo sobre..." assinado.
                        if (canais[b].subcanais[c].id.indexOf("td_") > -1) {
                            arrCanaisTodos.push(canais[b].id);
                        }

                        // Plugin do google usado para consumir os RSS/Feeds
                        $.jGFeed(canais[b].subcanais[c].rss, function(feeds) {
                            // Verifica se ocorreu algum erro
                            if (!feeds)
                                return false;

                            contador++;

                            // Monta o obj com todos os feeds
                            for (var i = 0; i < feeds.entries.length; i++) {
                                var entry = feeds.entries[i];
                                arrFeeds.push({ idCanal: canais[b].id,
                                    idSubcanal: canais[b].subcanais[c].id,
                                    descCanal: descCanal,
                                    linkCanal: feeds.link,
                                    feed: entry
                                });
                            }

                            // Verifica se todos os feeds de todos os canais já foram carregados e chama o callback
                            if (contador == canaisGravados.id.length) {
                                if (typeof callback == 'function') {
                                    callback.call(this, arrFeeds, arrCanaisTodos);
                                }
                            }

                        }, numFeeds);

                    }
                });
            });
        });
    }
});


/**********************************************************************************************************************************/
// Inicializa o aplicativo
/**********************************************************************************************************************************/
function init() {
    ajaxLoader(true);
    escondePages(); // Esconde todas as paginas.
    $(".pagina-escolha").show();

    var maskHeight = $(document).height();
    var maskWidth = $(document).width();
    $('#maskLoader').css({ 'width': maskWidth, 'height': maskHeight });

    // Caso não seja o dono, redireciona para a pagina de instalação do app.
    if (!viewerIsOwner()) {
        window.top.location.replace(urlInstallApp);
        return;
    }
    
    redirectIndicarApp(); //define evento click do link para a tela de Indicar Aplicativo.
    gravaCanais(); // Evento do botão adicionar/alterar canais
    replaceArroba();
	
	// Busca o canais do dono do aplicativo
	buscaCanaisOwner({"hadError":function(){return false;}});
}

function escondePages() {
    gerenciaCanais();
    $("#acompanhar_canais").hide();
    $("#indicar_app").hide();
    $("#enviar_noticia").hide();
}

function buscaCanaisOwner(data) {
	if (data.hadError()) {
	    alert("Erro: " + data.getErrorMessage());
	} 
	
	buscaDados({"user":"OWNER", 
				"groupId":"SELF", 
				"dados":["CANAIS"], 
				"retorno":"data",
				"params":{}
    }, processaCanaisOwner);
}

function processaCanaisOwner(resp) {
    var dataResp = resp.get('data');
    var owner = resp.get("people_0").getData();

    if (!dataResp.hadError()) {
        var data = dataResp.getData();
        var ownerId = gadgets.util.getUrlParameters()["gadgetOwner"];

        if (owner.getById(ownerId) == null) {
            alert("Erro ao buscar os dados do Orkut. Tente novamente.");
            return false;
        }

        //Saudação Dinamica com o nome do dono
        nomeOwner = owner.getById(ownerId).getDisplayName();
        $("#nomeDono").text(nomeOwner);

        var ownerData = data[ownerId];

        if (ownerData != undefined) {
            if (ownerData["CANAIS"] != undefined) { // Se os canais já estão escolhidos.
                var canaisGravados = gadgets.json.parse(gadgets.util.unescapeString(ownerData["CANAIS"]));
                canaisOwner = canaisGravados;
                canaisOwnerCarregados = true;

                carregaAlteraCanais(canaisGravados); // definindo evento click que carregará a tela de alteração
                lerMaisHome(null, 'Home'); // define click do link ler mais no site do extra.
                
                // Printa Feeds
                $.carregaFeeds(canaisGravados, 5, function(arrFeeds, arrCanaisTodos) {
                    var strHTML = '';

                    if (arrFeeds.length > 0) {
                        // Ordena todos os feeds por Data
                        arrFeeds.sort(OrdenarPorData);
                        // Limpa noticias
                        $(".lista-noticias").html(strHTML);
                    }

                    for (var i = 0; i < arrFeeds.length; i++) {
                        var item = arrFeeds[i];
                        var data = formataData(item.feed.publishedDate);
                        var arvoreCanal = item.descCanal.replace(" <span>&nbsp;&nbsp;</span> ", "/");
                        var param = arvoreCanal + "/" + item.feed.title;
                        var gaReportTexto = "ga.reportPageview('/app/" + param + "');";
                        var gaReportLerMais = "ga.reportPageview('/app/LerMais/" + param + "');";
                        var gaReportEnviarNoticia = "ga.reportPageview('/app/EnviarAmigos/link');";
                        var gaReportComentar = "ga.reportPageview('/app/Comentar/link');";

                        strHTML = '';
                        strHTML +=
	                        '<li name="' + item.idSubcanal + '" class="canal-' + item.idCanal + '">' +
	                            '<h2>' + item.descCanal + '</h2>' +
	                            '<p><a href="' + item.feed.link + '" class="txt_data" target="_blank" onclick="' + gaReportTexto + '">' + data + '</a></p>' +
	                            '<h3><a href="' + item.feed.link + '" target="_blank" onclick="' + gaReportTexto + '">' + item.feed.title + '</a></h3>' +
	                            '<p><a href="' + item.feed.link + '" class="txt_noticia" target="_blank" onclick="' + gaReportTexto + '">' + item.feed.contentSnippet + '</a></p>' +
	                            '<ul class="lista-itens-noticias">' +
	                                '<li><a href="' + item.feed.link + '" target="_blank" class="ler-mais" onclick="' + gaReportLerMais + '">Ler Mais<span><img src="http://ve-o-extra.googlecode.com/svn/tags/R1/gadget/images/ext-ler-mais.gif"></span></a></li>' +
	                                '<li><a href="#" class="envie-amigos" onclick="' + gaReportEnviarNoticia + '">Enviar para meus amigos</a></li>' +
	                                '<li><a href="#containerDiv" name="modal" class="comentar" onclick="' + gaReportComentar + '">Comentar</a></li>' +
	                            '</ul>' +
	                            '<input type="hidden" value="' + item.linkCanal + '" />' +
	                        '</li>';

                        $(".lista-noticias").append(strHTML);

                        // Filtra os RSSs para eliminar duplicidade caso tenha "Tudo sobre..." assinando.
                        $.each(arrCanaisTodos, function(a) {
                            if (arrCanaisTodos[a] == item.idCanal) {
                                if (item.idSubcanal.indexOf("td_") == -1)
                                    $(".lista-noticias li[name=" + item.idSubcanal + "]").hide();
                            }
                        });
                    }

                    $("#btnRedirectIndicarApp").show();
                    $("#spanRedirectIndicarApp").hide();

                    exibePage("acompanhar_canais");
                    limitaExibicaoRSS(); // Limita em 5 a exibição de noticias
                    ajustaAltura("acompanhar_canais");

                    var maskHeight = $(document).height();
                    var maskWidth = $(document).width();
                    $('#maskLoader').css({ 'width': maskWidth, 'height': maskHeight });

                    filtraCanais(); // Define evento da select/combo de filtro de canais.
                    redirectEnviaNoticia(); // Definindo evento click do link indicar notícia para um amigo.
                    boxComentaNoticia();
                    atualizaComentarios();

                    buscaComentarios({ "hadError": function() { return false; } });
                });
            }
        } else { // Se não existe data no usuário
            verificaFlagDesenv(); // Controla a exibição de funcionalidades em desenvolvimento
            canaisOwner = {};
            listaCanais(); // lista os canais para seleção do usuário
        }
    } else {
        alert("Erro ao buscar os dados do usuário dono.");
    }
}

function carregaAlteraCanais(canaisGravados) {
    $("#btnAlterarCanais").click(function() {
        ga.reportPageview('/app/AlterarCanais');
        
        exibePage("alterar");
        $("#ckbSelecionarCanais").removeAttr("checked");

        $.each(canaisGravados.id, function(a) {
            $("#" + this).attr("checked", "true");
        });

        if ($(".tipo-canais input[type=checkbox]:checked").length == $(".tipo-canais input[type=checkbox]").length) {
            $("#adicionar-alterar_canais").checkCheckboxes();
        }

        $(".tipo-canais ul").each(function() {
            var chs = $("#" + this.id + " input[type=checkbox]").get();

            if (chs[0].checked) {
                for (var i = 0; i < chs.length; i++) {
                    if (i != 0)
                        $(chs[i]).attr("disabled", true);
                }
            }
        });
    });
}

function OrdenarPorData(objA, objB) {
    var dataA = new Date(objA.feed.publishedDate);
    var dataB = new Date(objB.feed.publishedDate);

    return ((dataA == dataB) ? 0 : ((dataA < dataB) ? 1 : -1));
}

function formataData(strData) {
    var dataFormatada;

    try {
        var data = new Date(strData);
        var dataTraduzida = $.datepicker.formatDate('dd/mm/yy', data);

        // Formatando hora e minuto para dois algarismos
        var hr = ((h = data.getHours().toString()) && h.length == 1) ? "0" + h : h;
        var min = ((m = data.getMinutes().toString()) && m.length == 1) ? "0" + m : m;

        dataFormatada = dataTraduzida + ', às ' + hr + ':' + min + 'h';
    }
    catch (err) {
        dataFormatada = strData;
    }

    return dataFormatada;    
}

function listaCanais() {
	if (!viewerIsOwner()) { 
		if(canaisOwner.id!=undefined) {
			alert("Você não pode escolher os canais do seu amigo.");
			return;
		} else {
		    alert("Seu amigo ainda não escolheu os canais.");
		}
	}

	if (!canaisCarregados) {
	    exibePage("adicionar");
		canaisCarregados = true;
    }

    ajaxLoader(false);
}

// Monta e define os eventos da tela de adicionar/alterar canais
function gerenciaCanais(str) {
    var div = $("#adicionar-alterar_canais");

    $("#saudacao").hide();

    if (str == null) {
        verificaFlagDesenv();
        div.hide();
        return;
    }

    var btnAcompanharCanais = div.find("#btnAcompanharCanais");
    var h2 = div.find("h2");
    var btnGravarCanais = div.find("#btnGravarCanais");

    if (str == "adicionar") {
        $("#btnRedirectIndicarApp").hide();
        $("#saudacao").show();
        btnAcompanharCanais.hide();
        h2.text("Adicione os canais que deseja acompanhar:");
        btnGravarCanais.attr("class", "btn-adicionar-canais");
        btnGravarCanais.text("Adicionar Canais");
    }

    if (str == "alterar") {
        $("#btnRedirectIndicarApp").show();
        $("#spanRedirectIndicarApp").hide();
        btnAcompanharCanais.show();
        h2.text("Altere os canais que deseja acompanhar:");
        btnGravarCanais.attr("class", "btn-alterar-canais");
        btnGravarCanais.text("Alterar Canais");
    }

    carregaCanais(); //Monta html com os canais disponiveis para acompanhar
    gerenciaTodosChecks(); // Eventos dos checkboxes de adicionar/alterar canais
    verificaFlagDesenv(); //Esconde algumas funcionalidades de acordo com o desenvolvimento
    div.show();
}

function carregaCanais() {
    var strHTML = '';
    var divColunaEsq = '<div class="canais-esquerdo">';
    var divColunaDir = '<div class="canais-direito">';

    $.each(canais, function(i) {
        strHTML = '';
        strHTML +=
            '<fieldset>' +
                '<legend class="' + canais[i].id + '"><span>' + canais[i].nome + '</span></legend>' +
                '<ul id="canais_' + canais[i].id + '">';

        $.each(canais[i].subcanais, function(p) {
            strHTML +=
                    '<li>';
            
            if (canais[i].subcanais[p].rss == "") {
                strHTML +=
                        '<input type="checkbox" disabled id="' + canais[i].subcanais[p].id + '" value="' + canais[i].subcanais[p].rss + '" />' +
                        '<label class="lbldisabled" for="' + canais[i].subcanais[p].id + '">' + canais[i].subcanais[p].nome + ' (em breve)</label>';
            }
            else {
                strHTML +=
                        '<input type="checkbox" id="' + canais[i].subcanais[p].id + '" value="' + canais[i].subcanais[p].rss + '" />' +
                        '<label for="' + canais[i].subcanais[p].id + '">' + canais[i].subcanais[p].nome + '</label>';
            }

            strHTML +=
                    '</li>';
        });

        strHTML +=
                '</ul>' +
            '</fieldset>';

        if (canais[i].divColuna == "esq")
            divColunaEsq += strHTML;
        else if (canais[i].divColuna == "dir")
            divColunaDir += strHTML;
    });

    divColunaEsq += '</div>';
    divColunaDir += '</div>';

    $(".tipo-canais").html(divColunaEsq + divColunaDir);
}

function gerenciaTodosChecks() {
    $("#ckbSelecionarCanais").change(function() {
        var chk = this;

        $(".tipo-canais ul").each(function() {
            gerenciaCheckBoxesCanais(chk, this);
        });
    });

    $(".tipo-canais ul").each(function() {
        var box = this;
        var chs = $(box).find("input[type=checkbox]").get();

        $(chs[0]).change(function() {
            gerenciaCheckBoxesCanais(this, box);
        });
    });
}

function gerenciaCheckBoxesCanais(chk, box) {
    if (chk.checked) {
        $(box).checkCheckboxes(":not(input[type=checkbox][value=''])");

        $(box).find("input[type=checkbox][value!='']").each(function(i) {
            if (i != 0)
                $(this).attr("disabled", true);
        });
    } else {
        $(box).unCheckCheckboxes(":not(input[type=checkbox][value=''])");

        $(box).find("input[type=checkbox][value!='']").each(function(i) {
            if (i != 0)
                $(this).removeAttr("disabled");
        });

        $("#ckbSelecionarCanais").removeAttr("checked");
    }
}

function gravaCanais() {
    $("#btnGravarCanais").click(function() {
        ajaxLoader(true);
        var canaisSelecionados = { id: [] };

        if (viewerIsOwner()) { // se viewer for = Owner, permite escolher os canais.
            if ($(".tipo-canais input[type=checkbox]:checked").length > 0) {
                $(".tipo-canais input[type=checkbox]:checked").each(function() {
                    canaisSelecionados.id.push(this.id);
                });

                var json = gadgets.json.stringify(canaisSelecionados);

                // Grava os dados na base persistente do orkut.
                escreveDados(["CANAIS"], [json], buscaCanaisOwner);

                if ($("#btnGravarCanais").text() == "Adicionar Canais") {
                    ga.reportEvent("App Orkut", "Incluiu Aplicativo", "Button");
                
                    // post de instalação.
                    var title = 'Instalou o aplicativo <a style="text-decoration:underline!important;" href="' + urlInstallApp + '">Vê o Extra</a> e agora está por dentro de tudo que acontece';
                    var body =
                        '<div style="overflow: hidden; width: 520px; font-family: arial;">' +
                            '<img src="http://ve-o-extra.googlecode.com/svn/tags/R1/gadget/images/logo_update.png" ' +
                            'alt="Extra" style="float: left; margin-right: 7px ! important; margin-bottom: 5px;">' +
                            '<div style="margin-left: 5px; margin-top: 0px; margin-bottom: 0px; float: left; font-size: 11px; width: 350px;">' +
                                '<p style="width: auto; font-size: 11px;">' +
                                    '<a style="text-decoration:underline!important;" href="' + urlInstallApp + '">Instale o <strong>Vê o Extra</strong></a> você também, escolha os temas que mais te interessam e <strong>receba' +
                                    ' as últimas notícias direto no seu perfil.</strong><br /> Pode ser sobre o seu time, o mundo das' +
                                    ' celebridades, sobre a sua cidade e muito mais.<strong> Tudo com a sua cara e do seu jeito.</strong>' +
                                '</p>' +
                            '</div>' +
                            '<a href="' + urlInstallApp + '">' +
                                '<img src="http://ve-o-extra.googlecode.com/svn/tags/R1/gadget/images/instale_extra.png" alt="Adicionar Aplicativo"' +
                                ' border="0" width="163" style="float: right; margin-top: 36px; margin-right: 17px; margin-bottom: 0px;">' +
                            '</a>' +
                        '</div>';

                    postUpdate(title, body);
                }
                else {
                    ga.reportEvent("App Orkut", "Alterou Canal", "Button");
                }
            }
            else {
                alert('Você deve selecionar pelo menos um canal.');
                ajaxLoader(false);
            }
        }
        else { // Se viewer != owner, não permite escolha dos canais
            alert("Você não pode escolher os canais do seu amigo.");
        }
    });
}

function filtraCanais() {
    $("#comboCanais").change(function() {
        var valor = $(this).val();

        if (valor != "todos") {
            $(".lista-noticias li[class^=canal-]").each(function() {
                if ($(this).attr("name") == valor) {
                    $(this).show();
                    lerMaisHome($(this).find("input[type='hidden']").val(), $("#comboCanais option:selected").text().replace(" > ", "/"));
                }
                else {
                    $(this).hide();
                }
            });
        }
        else {
            var arrCanaisTodos = [];

            lerMaisHome(null, "Home");

            $("#comboCanais").find("option[value^='td_']").each(function() {
                var canalTodos = $(this).val().replace("td_", "");
                arrCanaisTodos.push(canalTodos);
            });

            $(".lista-noticias li[class^=canal-]").each(function() {
                var name = $(this).attr("name");
                var classe = $(this).attr("class");

                $(this).show();

                $.each(arrCanaisTodos, function(a) {
                    if (classe == "canal-" + arrCanaisTodos[a]) {
                        if (name.indexOf("td_") == -1)
                            $(".lista-noticias li[name=" + name + "]").hide();
                    }
                });
            });
        }

        limitaExibicaoRSS(); // Limita em 5 a exibição de noticias
        ajustaAltura("acompanhar_canais");
    });
}

function lerMaisHome(link, arvoreCanal) {
    var gaEventLerMaisSite = "ga.reportEvent('App Orkut', 'Ver Mais no Site " + arvoreCanal + "', 'Button');";
    
    if (link == null || link == '')
        link = urlExtra;

    $("#btnLerMaisHome").attr("href", link);
    $("#btnLerMaisHome").attr("onclick", gaEventLerMaisSite);
}

function limitaExibicaoRSS() {
    $(".lista-noticias li[class^=canal-]:visible").each(function(i) {
        $(this).removeClass("ultimalinha");
        if (i > (numLimiteRSS -1))
            $(this).hide();
    });

    $(".lista-noticias li[class^=canal-]:visible:last").addClass("ultimalinha");
}

function redirectIndicarApp() {
    $("#btnRedirectIndicarApp").click(function() {
        reiniciarIndicacao("app"); // Reinicia tela de Indicação
        gerenciaSelectAmigosApp();
        exibePage("indicar_app");
        $("#btnRedirectIndicarApp").hide();
        $("#spanRedirectIndicarApp").show();
    });
}

function redirectEnviaNoticia() {
	// Ao clicar no link, todo o bloco de html da noticia a ser enviada é clonada para a div de noticia de indicar app.
    $(".lista-noticias a[class=envie-amigos]").each(function() {
        $(this).click(function() {
            reiniciarIndicacao("noticia"); // Reinicia tela de Indicação
            copiaNoticia("#enviar_noticia", this);
            gerenciaSelectAmigosNoticia();
            exibePage("enviar_noticia");
        });
    });
}

function voltarAcompanharNoticia(page) {
    ga.reportPageview('/' + page + '/VoltarCanais');
    
    if (canaisOwnerCarregados) {
        $("#btnRedirectIndicarApp").show();
        $("#spanRedirectIndicarApp").hide();
        exibePage("acompanhar_canais");
    }
    else {
        exibePage("adicionar");
    }
}

function reiniciarIndicacao(indicacao) {
    var idDiv;
    var btn;
    var divMais;
    
    if (indicacao == "app") {
        idDiv = "#indicar_" + indicacao;
        btn = "#btnIndicar";
        divMais = "#indicarMais";
    }
    else {
        idDiv = "#enviar_" + indicacao;
        btn = "#btnEnviar";
        divMais = "#enviarMais";
    }

    $(idDiv).each(function() {
        $("#boxMeusAmigos_" + indicacao).unCheckCheckboxes();
        $("#meusAmigos_" + indicacao).find("ul").html('');
        $("#meusAmigosSelecionados_" + indicacao).find("ul").html('');

        if ($(".msg-sucesso").show()) {
            $(".msg-sucesso").hide();
            $("#boxAmigosSelecionados_" + indicacao).addClass("amigos-selecionados");
        }

        $("#boxMeusAmigos_" + indicacao).show();
        $(divMais).hide();
        $(btn).show();
    });
}

/**********************************************************************************************************************************/
// QA TÉCNICO (Aguardando Liberação)
// Histórias:
// - Indicar aplicativo
/**********************************************************************************************************************************/

// function para verificar flag de desenvolvimento, isso esconde/mostra funcionalidades em desenv
function verificaFlagDesenv() {
    if (!flagDesenv) {
        $("#btnRedirectIndicarApp").hide();
        $("#spanRedirectIndicarApp").hide();

        $("ul[class='lista-itens-noticias']").find("li").each(function() {
            if ($(this).find("a").attr("class") != "ler-mais")
                $(this).hide();
        });
    }
}

// Busca todos os amigos do dono
function gerenciaSelectAmigosApp() {
    ajaxLoader(true);
    buscaDados([
        {
            "user": "OWNER",
            "groupId": "FRIENDS",
            "params": { "filter": "all", "sortOrder": "name", "profiledetails": ["PROFILE_URL"] },
            "dados": "",
            "retorno": ""
        },
        {
            "user": "OWNER",
            "groupId": "FRIENDS",
            "params": { "filter": "hasApp", "sortOrder": "name", "profiledetails": ["PROFILE_URL"] },
            "dados": "",
            "retorno": ""
        }
    ]
	, processaAmigosApp);
}

function processaAmigosApp(resp) {
    var friendsAll = resp.get("people_0").getData();
    var friendsApp = resp.get("people_1").getData();
    var friendsSemApp = [];
    var semApp;

    friendsAll.each(function (personAll) {
        semApp = true;

        if (personAll.getId()) {
            friendsApp.each(function (personApp) {
                if (personAll.getId() == personApp.getId()) {
                    semApp = false;
                    return true;
                }
            });

            if (semApp)
                friendsSemApp.push({ "ID": personAll.getId(), "Nome": personAll.getDisplayName(), "Thumb": personAll.getField(opensocial.Person.Field.THUMBNAIL_URL), "Profile": personAll.getField(opensocial.Person.Field.PROFILE_URL) });
        }
    });

	montaHtmlAmigos(friendsSemApp, "meusAmigos_app");
	selecionaTodosAmigos("app");
	gerenciaCheckBoxesAmigos("app");

    indica('app');
    indicaMais("app");
    ajaxLoader(false);
    ajustaAltura("indicar_app");
}

function OrdenarPorNome(objA, objB) {
    return ((objA.Nome.toLowerCase() == objB.Nome.toLowerCase()) ? 0 : ((objA.Nome.toLowerCase() > objB.Nome.toLowerCase()) ? 1 : -1));
}

// Define os eventos dos checks
function gerenciaCheckBoxesAmigos(indicacao) {
    $("#meusAmigos_" + indicacao).find("li").each(function () {
        var li = this;

        $(li).find("input[type='checkbox']").each(function () {
            var chk = this;

            $(chk).change(function () {
                if (this.checked) { // selecionado um amigo e passando para o boxes de amigos selecionados
                    $("#meusAmigosSelecionados_" + indicacao).find("ul").append($(li).clone());
                    ordenaAmigosSelecionados(indicacao);
                }
                else { // verificando os dados para remover o amigo da seleção
                    $("#meusAmigosSelecionados_" + indicacao).find("li").each(function () {
                        if ($(this).attr("name") == $(li).attr("name")) {
                            $(this).remove();
                            $("#selecionarTodos_" + indicacao).removeAttr("checked");
                            return true;
                        }
                    });
                }
            });
        });
    });
}

//Ordena os amigos selecionados por ordem alfabetica e define eventos dos checks do boxes de amigos selecionados
function ordenaAmigosSelecionados(indicacao) {
    var amigosSelecionados = [];

    // monta o array com os dados dos amigos para reordenar.
    $("#meusAmigosSelecionados_" + indicacao).find("li").each(function () {
        var id = $(this).attr("name");
        var profile = $(this).find("input").attr("value");
        var thumb = $(this).find("img").attr("src");
        var nome = $(this).find("p").text();

        amigosSelecionados.push({ "ID": id, "Nome": nome, "Thumb": thumb, "Profile": profile });
    });

    // Monta o html (li) dos amigos já reordenado.
    montaHtmlAmigos(amigosSelecionados, "meusAmigosSelecionados_" + indicacao);
    $("#meusAmigosSelecionados_" + indicacao).checkCheckboxes();

    carregaAmigosSelecionados(indicacao);
}

function carregaAmigosSelecionados(indicacao) {
    $("#meusAmigosSelecionados_" + indicacao).find("li").each(function() {
        var li = this;

        // define evento dos checks dos amigos selecionados
        $(li).find("input[type='checkbox']").each(function() {
            var chk = this;

            $(chk).change(function() {
                if (!this.checked) {
                    $("#meusAmigos_" + indicacao).find("li").each(function() {
                        if ($(this).attr("name") == $(li).attr("name"))
                            $(this).find("input[type='checkbox']").removeAttr("checked");
                    });

                    // remove o amigo e seu respectivo HTML (li) do boxes de seleção.
                    $(li).remove();
                    $("#selecionarTodos_" + indicacao).removeAttr("checked");
                }
            });
        });
    });
}

// Define evento do check selecionar todos os amigos
function selecionaTodosAmigos(indicacao) {
    var strHTML = '';

    $("#selecionarTodos_" + indicacao).change(function () {
        if (this.checked) {
            $("#meusAmigos_" + indicacao).checkCheckboxes();
            // copia o codigo html com todos os amigos para o box de amigos selecionados.
            strHTML = $("#meusAmigos_" + indicacao).find("ul").html();
            $("#meusAmigosSelecionados_" + indicacao).find("ul").html(strHTML);
            $("#meusAmigosSelecionados_" + indicacao).checkCheckboxes();

            carregaAmigosSelecionados(indicacao);
        }
        else {
            //descamarca tudo e limpa o boxes de selecionados
            $("#meusAmigos_" + indicacao).unCheckCheckboxes();
            $("#meusAmigosSelecionados_" + indicacao).find("ul").html('');
        }
    });
}

// Reordena e monta o HTML (li) de dentro da div dos boxes de amigos.
function montaHtmlAmigos(arr, divID) {
    var strHTML = '';

    if (divID.indexOf("Selecionados") == -1)
        arr.sort(OrdenarPorNome);

    $.each(arr, function () {
        strHTML +=
            '<li name="' + this.ID + '">' +
                '<input type="checkbox" value="' + this.Profile + '" />' +
                '<div class="item-amigo"><img src="' + this.Thumb + '" /></div>' +
                '<p>' + this.Nome + '</p>' +
            '</li>';
    });

    $("#" + divID).find("ul").html(strHTML);
}

// realiza a indicação app/noticia para amigos
function indica(indicacao) {
    var btn;

    if (indicacao == "app")
        btn = "#btnIndicar";
    else
        btn = "#btnEnviar";

    $(btn).click(function() {
        var idDiv;
        var divMais;
        var title;
        var amigosSelecionados = [];
        var body = '';

        $("#meusAmigosSelecionados_" + indicacao).find("li").each(function() {
            var id = $(this).attr("name");
            var profile = $(this).find("input").attr("value");
            var thumb = $(this).find("img").attr("src");
            var nome = $(this).find("p").text();

            amigosSelecionados.push({ "ID": id, "Nome": nome, "Thumb": thumb, "Profile": profile });
        });

        if (amigosSelecionados.length > 0) {
            if (indicacao == "app") {
                idDiv = "#indicar_" + indicacao;
                divMais = "#indicarMais";
                title = 'Convidou você para conhecer o aplicativo <a style="text-decoration:underline!important;" href="' + urlInstallApp + '">Vê o Extra</a> e ficar por dentro de tudo que acontece';
                body = bodyPostApp(amigosSelecionados);
            }
            else {
                idDiv = "#enviar_" + indicacao;
                divMais = "#enviarMais";
                title = 'Falou que você precisa ver essa notícia que ele acabou de ler no aplicativo  <a style="text-decoration:underline!important;" href="' + urlInstallApp + '">Vê o Extra</a> ';
                body = bodyPostNoticia(amigosSelecionados);
            }

            postUpdate(title, body);

            //Sucesso
            $(idDiv).each(function() {
                $("#meusAmigosSelecionados_" + indicacao).find("input[type=checkbox]").each(function() {
                    $(this).attr("disabled", true);
                });

                $(".msg-sucesso").show();
                $("#boxMeusAmigos_" + indicacao).hide();
                $("#boxAmigosSelecionados_" + indicacao).removeClass("amigos-selecionados");
                $(divMais).show();
                $(btn).hide();
            });

            ajustaAltura(idDiv + " SUCESSO");
            window.location = "#topo";
        }
        else {
            alert("Você deve selecionar pelo menos um amigo.");
        }
    });
}

// Indica app/noticias mais para mais amigos
function indicaMais(indicacao) {
    var idDiv;
    var btn;
    var divMais;

    if (indicacao == "app") {
        idDiv = "#indicar_" + indicacao;
        btn = "#btnIndicar";
        divMais = "#indicarMais";
    }
    else {
        idDiv = "#enviar_" + indicacao;
        btn = "#btnEnviar";
        divMais = "#enviarMais";
    }

    $(idDiv).each(function() {
        $(".btn-indicar-mais").click(function() {
            ga.reportEvent("App Orkut", "Enviar Notícia a Mais Amigos", "Button");
            
            $("#boxMeusAmigos_" + indicacao).unCheckCheckboxes();
            $("#meusAmigosSelecionados_" + indicacao).find("ul").html('');
            $(".msg-sucesso").hide();
            $("#boxMeusAmigos_" + indicacao).show();
            $("#boxAmigosSelecionados_" + indicacao).addClass("amigos-selecionados");
            $(divMais).hide();
            $(btn).show();
        });
    });

    ajustaAltura(idDiv);
}

// ajusta altura de acordo com o browser e page
function ajustaAltura(page) {
    var pixelsIE7;
    var pixelsIE8;


    switch (page) {
        case "adicionar-alterar_canais":
            pixelsIE7 = '1220px';
            pixelsIE8 = '1230px';
            break;
        case "acompanhar_canais":
            pixelsIE7 = '1250px';
            pixelsIE8 = '1280px';
            break;
        case "indicar_app":
            pixelsIE7 = '910px';
            pixelsIE8 = '900px';
            break;
        case "indicar_app SUCESSO":
            pixelsIE7 = '900px';
            pixelsIE8 = '910px';
            break;
        case "enviar_noticia":
            pixelsIE7 = '1130px';
            pixelsIE8 = '1050px';
            break;
        case "enviar_noticia SUCESSO":
            pixelsIE7 = '1100px';
            pixelsIE8 = '1035px';
            break;
    }

    alturaPorNavegador(pixelsIE7, pixelsIE8);
}

function alturaPorNavegador(pixelsIE7, pixelsIE8) {
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { //test for MSIE x.x;
        var ieversion = new Number(RegExp.$1) // capture x.x portion and store as a number
        
        if (ieversion >= 8)
            gadgets.window.adjustHeight(pixelsIE8);
        else
            gadgets.window.adjustHeight(pixelsIE7);
    }
    else {
        gadgets.window.adjustHeight();
    }
}

function replaceArroba() {
    var strHTML = $(".duvida").html();
    
    strHTML = strHTML.replace(/#arroba#/g, "@");
    $(".duvida").html(strHTML);
}

function exibePage(page) {
    escondePages();

    if (page == "adicionar" || page == "alterar")
        gerenciaCanais(page);
    else
        $("#" + page).show();
    
    ajustaAltura(page);
}

// Busca todos os amigos do dono para seleção de envio de notícia
function gerenciaSelectAmigosNoticia() {
    ajaxLoader(true);
    buscaDados(
        {
            "user": "OWNER",
            "groupId": "FRIENDS",
            "params": { "filter": "all", "sortOrder": "name", "profiledetails": ["PROFILE_URL"] },
            "dados": "",
            "retorno": ""
        }
	    , processaAmigosNoticia
	);
}

function processaAmigosNoticia(resp) {
    var friendsAll = resp.get("people_0").getData();
    var friendsInfo = [];

    friendsAll.each(function(personAll) {
        if (personAll.getId()) {
            friendsInfo.push({ "ID": personAll.getId(), "Nome": personAll.getDisplayName(), "Thumb": personAll.getField(opensocial.Person.Field.THUMBNAIL_URL), "Profile": personAll.getField(opensocial.Person.Field.PROFILE_URL) });
        }
    });

	montaHtmlAmigos(friendsInfo, "meusAmigos_noticia");
	selecionaTodosAmigos("noticia");
	gerenciaCheckBoxesAmigos("noticia");
	indica('noticia');
	indicaMais("noticia");
	ajaxLoader(false);
	ajustaAltura("enviar_noticia");
}

// define evento do link comentar notícia (lightbox)
function boxComentaNoticia() {
    $('a[name=modal]').click(function(e) {
        e.preventDefault();

        copiaNoticia(".conteudo-lightbox", this);
        var h2 = $(".conteudo-lightbox .noticia-envio").find("div h2");
        var h3 = $(".conteudo-lightbox .noticia-envio").find("div h3");
        var arvoreCanal = $(h2).text().replace(" <span>&nbsp;&nbsp;</span> ", "/");
        var titulo = $(h3).find("a").text();
        $(h3).append('<img alt="ler mais" src="http://ve-o-extra.googlecode.com/svn/tags/R1/gadget/images/ext-ler-mais.png" />');

        $(".conteudo-lightbox .noticia-envio").find("a").each(function() {
            $(this).attr("onclick", "").click(ga.reportPageview('/app/comentario/' + arvoreCanal + '/' + titulo));
        });

        $(".conteudo-lightbox").find("label").show();
        $("#txtcomentario").show();
        $("#txtcomentario").val('');
        $(".info").show();
        $(".btnComentar").show();
        $(".sucesso-comentario").hide();

        var id = $(this).attr('href');
        var maskHeight = $(document).height();
        var maskWidth = $(window).width();

        $('#mask').css({ 'width': maskWidth, 'height': maskHeight });
        $('#mask').fadeIn(1000);
        $('#mask').fadeTo('slow', 0.8);

        //Get the window height and width
        var winH = $(window).height();
        var winW = $(window).width();

        $(id).css('top', winH / 2 - $(id).height() / 2);
        $(id).css('left', winW / 2 - $(id).width() / 2);
        $(id).fadeIn(2000);
        window.location = id;
    });

    $('.lightbox-container .closeLink').click(function(e) {
        e.preventDefault();

        $('#mask').hide();
        $('.lightbox-container').hide();
    });
    
    $('.lightbox-container .btnFecharComentario').click(function(e) {
        e.preventDefault();

        $('#mask').hide();
        $('.lightbox-container').hide();
        window.location = "#topo";
    });

    $('#mask').click(function() {
        $(this).hide();
        $('.lightbox-container').hide();
    });

    $('#txtcomentario').limit('140', '#resta');
    $('#txtcomentario').focus();

    comentaNoticia();
}

// copia a html e conteúdo da notícia a ser interagida
function copiaNoticia(selector, btn) {
    var div = $(selector + " .noticia-envio").find("div");
    var li = $(btn).parents("li[class^=canal-]").clone();

    $(li).find("ul").remove();
    $(li).find("input[type=hidden]").remove();
    $(div).attr("name", $(li).attr("name"));
    $(div).attr("class", $(li).attr("class"));
    $(div).html($(li).html());
}

// Grava o comentário
function comentaNoticia() {
    $(".btnComentar").click(function(e) {
        e.preventDefault();
        
        if ($('#txtcomentario').val().length < 1) {
            alert("O comentário está em branco.");
            return;
        }

        if (viewerIsOwner()) { // se viewer for = Owner, permite comentar
            var div = $(".conteudo-lightbox .noticia-envio").find("div");
            var id = $(div).attr("name");
            var classCSS = $(div).attr("class");
            var descricao = $(div).find("h2").html();
            var data = $(div).find(".txt_data").text();
            var titulo = $(div).find("h3 a").text();
            var link = $(div).find("h3 a").attr("href");
            var dataComentario = String(new Date());
            var comentario = $("#txtcomentario").val();

            ga.reportEvent("App Orkut", "Comentou a Notícia " + descricao.replace(' <span>&nbsp;&nbsp;</span> ', '/') + "/" + titulo, "Button");

            if (!comentariosOwnerCarregados) // verifica se os comentarios do owner já foram carregados
                comentariosOwner = { "coments": [] };

            comentariosOwner.coments.push({
                "id": id,
                "classCSS": classCSS,
                "descricao": descricao,
                "data": data,
                "titulo": titulo,
                "link": link,
                "dataComentario": dataComentario,
                "comentario": comentario
            });

            comentariosOwner.coments.sort(OrdenarComents);

            if (comentariosOwner.coments.length > (numLimiteRSS +1)) // limita a gravação/exibição dos comentários
                comentariosOwner.coments.pop();

            var json = gadgets.json.stringify(comentariosOwner);

            // Grava os dados na base persistente do orkut.
            escreveDados(["COMENTARIOS"], [json], buscaComentarios);

            $(".conteudo-lightbox").find("label").hide();
            $("#txtcomentario").hide();
            $(".info").hide();
            $(".btnComentar").hide();
            $(".sucesso-comentario").show();

            window.location = "#containerDiv";
        }
        else { // Se viewer != owner, não permite comentar
            alert("Você não pode comentar as notícias do seu amigo.");
        }
    });
}

function OrdenarComents(objA, objB) {
    var dataA = new Date(objA.dataComentario);
    var dataB = new Date(objB.dataComentario);

    return ((dataA == dataB) ? 0 : ((dataA < dataB) ? 1 : -1));
}

function buscaComentarios(data) {
    if (data.hadError()) {
        alert("Erro: " + data.getErrorMessage());
    }

    buscaDados([
        {
            "user": "OWNER",
            "groupId": "SELF",
            "dados": ["COMENTARIOS"],
            "retorno": "dadosOwner",
            "params": {}
        },
        {
            "user": "OWNER",
            "groupId": "FRIENDS",
            "dados": ["COMENTARIOS"],
            "retorno": "dadosFriends",
            "params": { "filter": "hasApp", "sortOrder": "name", "profiledetails": ["PROFILE_URL"] }
        }
    ], processaComentarios);
}

function processaComentarios(resp) {
    var owner = resp.get("people_0").getData();
    var friends = resp.get("people_1").getData();
    var respOwner = resp.get('dadosOwner');
    var respFriends = resp.get('dadosFriends');

    var comentCanaisOwner = [];

    if (!respOwner.hadError()) {
        var dadosOwner = respOwner.getData();
        var ownerId = gadgets.util.getUrlParameters()["gadgetOwner"];

        if (owner.getById(ownerId) == null) {
            alert("Erro ao buscar os dados do Orkut. Tente novamente.");
            return false;
        }

        // carrega comentários do owner
        var data = dadosOwner[ownerId];
        if (data != undefined) {
            if (data["COMENTARIOS"] != undefined) {
                comentariosOwner = gadgets.json.parse(gadgets.util.unescapeString(data["COMENTARIOS"]));
                comentariosOwnerCarregados = true;

                $.each(canaisOwner.id, function(p) {
                    var canalID = this;

                    $.each(comentariosOwner.coments, function(i) {
                        if (canalID == this.id) {
                            comentCanaisOwner.push({
                                "nome": owner.getById(ownerId).getDisplayName(),
                                "foto": owner.getById(ownerId).getField(opensocial.Person.Field.THUMBNAIL_URL),
                                "coment": this
                            });
                        }
                    });
                });
            }
        }
    }
    else {
        alert("Erro ao buscar os dados do usuário dono.");
        return;
    }
    
    if (!respFriends.hadError()) {
        var dadosFriends = respFriends.getData();

        // carrega comentários dos amigos
        friends.each(function(person) {
            if (person.getId()) {
                var personData = dadosFriends[person.getId()];
                if (personData != undefined) {
                    if (personData["COMENTARIOS"] != undefined) { // Se existe comentarios
                        var comentariosGravados = gadgets.json.parse(gadgets.util.unescapeString(personData["COMENTARIOS"]));

                        $.each(canaisOwner.id, function(p) {
                            var canalID = this;

                            $.each(comentariosGravados.coments, function(k) {
                                if (canalID == this.id) {
                                    comentCanaisOwner.push({
                                        "nome": person.getDisplayName(),
                                        "foto": person.getField(opensocial.Person.Field.THUMBNAIL_URL),
                                        "coment": this
                                    });
                                }
                            });
                        });
                    }
                }
            }
        });
    }
    else {
        alert("Erro ao buscar os dados dos amigos.");
        return;
    }

    comentCanaisOwner.sort(OrdenarComentPorData);
    montaHtmlComentarios(comentCanaisOwner);
    ajaxLoader(false);
}

function OrdenarComentPorData(objA, objB) {
    var dataA = new Date(objA.coment.dataComentario);
    var dataB = new Date(objB.coment.dataComentario);

    return ((dataA == dataB) ? 0 : ((dataA < dataB) ? 1 : -1));
}

function montaHtmlComentarios(arrComentarios) {
    var strHTML = '';
    var titulo;

    $(".comentario-vazio").hide();

    $.each(arrComentarios, function(i) {
        if (i > numLimiteRSS)
            return true;

        titulo = this.coment.titulo;

        if (titulo.length > 32) { // truncando titulo grande.
            titulo = this.coment.titulo.substr(0, 29) + "...";
        }

        strHTML +=
            '<li>' +
                '<div class="foto-pessoa">' +
                    '<img src="' + this.foto + '" alt="' + this.nome + '" />' +
                '</div>' +
                '<div class="nome-amigo">' + this.nome + '</div>' +
                '<div class="' + this.coment.classCSS + '">' +
                    '<h2>' + this.coment.descricao + '</h2>' +
                    '<h3>' +
                        '<a href="' + this.coment.link + '" target="_blank">' +
                            titulo +
                            '<img src="http://ve-o-extra.googlecode.com/svn/tags/R1/gadget/images/ext-ler-mais.png" alt="ler mais" />' +
                        '</a>' +
                    '</h3>' +
                    '<p class="comentario">' +
                        this.coment.comentario +
                    '</p>' +
                    '<span class="tempo-comentarios">' + tempoResolucaoVariavel(this.coment.dataComentario) + '</span>' +
                '</div>' +
            '</li>';
    });

    if (strHTML == '')
        $(".comentario-vazio").show();

    $(".lista-comentarios").html(strHTML);
    ajustaAltura("acompanhar_canais");
}

function atualizaComentarios() {
    $(".atualizar").click(function(e) {
        e.preventDefault();
        ajaxLoader(true);
        buscaComentarios({ "hadError": function() { return false; } });
    });
}

function tempoResolucaoVariavel(strData) {
    var dtComent = new Date(strData);
    var dtAtual = new Date();

    var result = Math.ceil((dtAtual - dtComent) / (1000));
    var texto = " segundo(s) ";
    if (result > 59) {
        result = Math.ceil(result / 60);
        texto = " minuto(s) ";
        if (result > 59) {
            result = Math.ceil(result / 60);
            texto = " hora(s) ";
            if (result > 24) {
                result = Math.ceil(result / 24);
                texto = " dia(s) ";
            }
        }
    }

    var retorno = String(result) + texto + "atrás.";

    return retorno;
}

/**********************************************************************************************************************************/
// function ajaxLoader
// 		Ativa / Desativa a mensagem de Carregando.
// 		ativar -> Booleano para exibir (true) / esconder (false) o div.
/**********************************************************************************************************************************/
function ajaxLoader(ativar) {
    if (ativar == true) {
        var maskHeight = $(document).height();
        var maskWidth = $(document).width();

        $('#maskLoader').css({ 'width': maskWidth, 'height': maskHeight });
        $('#maskLoader').fadeIn('fast');
        $('#maskLoader').fadeTo('fast', 0.8);

        var winH = $(window).height();
        var winW = $(window).width();

        $("#loading").fadeIn("fast");
        window.location = "#topo";
    }
    else {
        $('#maskLoader').hide();
        $("#loading").fadeOut("fast");
    }
}

function bodyPostApp(amigosSelecionados) {
    var body;
    
    body =
        '<div style="overflow: hidden; width: 520px; font-famyly: arial;">' +
            '<img src="http://ve-o-extra.googlecode.com/svn/tags/R1/gadget/images/logo_update.png" ' +
            'alt="Extra" style="float: left; margin-right: 7px ! important; margin-bottom: 5px;">' +
            '<div style="height: 55px; margin-top: 0px; margin-bottom: 0px; float: left; width: 170px;">' +
                '<ul>';

    $.each(amigosSelecionados, function(i) {
        if (i > 2)
            return true;

        body +=
            '<li>' +
                '<a style="width:100%;color:#000!important;display:block;font-family: arial; text-decoration: underline; font-size: 11px;height:15px; overflow:hidden;" href="' + amigosSelecionados[i].Profile + '"><strong>' + amigosSelecionados[i].Nome + '</strong></a>' +
            '</li>';
    });

    body += '</ul>';
    if (amigosSelecionados.length > 3)
        body += '<span style="font-size:11px;">e mais ' + String(amigosSelecionados.length - 3) + ' amigo(s)</span>';

    body +=
            '</div>' +
            '<a href="' + urlInstallApp + '" style="float: right; display: block;">' +
                '<img src="http://ve-o-extra.googlecode.com/svn/tags/R1/gadget/images/instale_extra.png" alt="Instale o Extra" ' +
                'style="float: right; margin-top: 23px; margin-right: 41px; margin-bottom: 6px;" border="0" width="163">' +
            '</a>' +
        '</div>';

    return body;
}

function bodyPostNoticia(amigosSelecionados) {
    var body;

    body =
        '<div style="overflow: hidden; width: 520px; font-famyly: arial;">' +
            '<img src="http://ve-o-extra.googlecode.com/svn/tags/R1/gadget/images/logo_update.png" ' +
            'alt="Extra" style="float: left; margin-right: 7px ! important; margin-bottom: 5px;">' +
            montaNoticia() +
            '<div style="clear: left; margin-left: 5px; width: 137px; float: left; font-size: 10px;">' +
                '<ul>';

    $.each(amigosSelecionados, function(i) {
        if (i > 2)
            return true;

        body +=
            '<li style="font-family: arial; text-decoration: underline; font-size: 10px;overflow:hidden;max-height:15px;">' +
                '<a  style="font-family: arial;color:#000!important; text-decoration: underline; font-size: 10px;overflow:hidden;max-height:15px;" href="' + amigosSelecionados[i].Profile + '">' + amigosSelecionados[i].Nome + '</a>' +
            '</li>';
    });

    body += '</ul>';
    if (amigosSelecionados.length > 3)
        body += '<span>e mais ' + String(amigosSelecionados.length - 3) + ' amigo(s)</span>';

    body +=
            '</div>' +
            '<a href="' + urlInstallApp + '" style="float: right; display: block;">' +
                '<img src="http://ve-o-extra.googlecode.com/svn/tags/R1/gadget/images/instale_extra.png" alt="Instale o Extra" ' +
                'style="float: right; margin-top: 23px; margin-right: 15px; margin-bottom: 6px;" border="0" width="163">' +
            '</a>' +
        '</div>';

    return body;
}

function montaNoticia() {
    var div = $("#enviar_noticia .noticia-envio").find("div").clone();
    var idCanal = $(div).attr("class").replace("canal-", "");
    var arvoreCanal = $(div).find('h2').html().replace(' <span>&nbsp;&nbsp;</span> ', '/');
    var descCanal = $(div).find('h2').html().replace('&nbsp;&nbsp;', '<img src="http://ve-o-extra.googlecode.com/svn/tags/R1/gadget/images/breadcrump.png" border="0" style="margin-right: 0px;" />');
    var link = $(div).find('.txt_data').attr('href');
    var data = $(div).find('.txt_data').text();
    var titulo = $(div).find('h3 a').text();

    ga.reportEvent("App Orkut", "Enviou Notícia " + arvoreCanal + '/' + titulo, "Button");

    if (titulo.length > 43) { // truncando titulo grande.
        titulo = titulo.substr(0, 40) + "...";
    }
    
    var strHTML =
        '<div style=" height: 55px; margin-top: 0px; margin-bottom: 0px; float: left; width: 355px;">' +
            '<h2 style="font-size: 13px; color: ' + colorH2(idCanal) + '; margin:0px!important;">' + descCanal + '</h2>' +
            '<p style="width: auto;">' +
                '<a href="' + link + '" style="color: #A7A9AC; margin-top: 5px; ' +
                'font-size: 10px; margin-bottom: 5px; display: block;" target="_blank">' +
                    data +
                '</a>' +
            '</p>' +
            '<h3>' +
                '<a href="' + link + '" style="color:#000;text-decoration: underline; font-size: 14px;" target="_blank">' + titulo + '</a>' +
                '<img src="http://ve-o-extra.googlecode.com/svn/tags/R1/gadget/images/ext-ler-mais.gif" border="0" style="margin-left: 3px; margin-right: 0px;" />' +
            '</h3>' +
        '</div>'

    return strHTML;        
}

function colorH2(idCanal) {
    var color;

    $.each(canais, function() {
        if (this.id.toLowerCase() == idCanal.toLowerCase()) {
            color = this.cor;
            return true;
        }
    });
    
    return color;
}